我在研究自己的线代学习过程
原文:Studying myself studying linear algebra | Patreon
过去几个月,我一直在深挖问题解决和阅读理解,我感觉现在漂浮在抽象的迷雾中,需要将想法落实下来。那些我眼里的问题,是不是只是量不够?只要阅读方法得当,题目难度适中,是不是问题就能迎刃而解?如果去除掉这些,问题还会剩下哪些?
所以这个月我没有继续观察学生,而是在观察自己。**即使我用上了自己的记忆系统,掌握了「专家级」的阅读技巧,做完了所有的习题 —— 我的学习经历中还会受到什么阻碍?**我希望在学习解释性文章的过程中,能创一种特殊的轻松和自信感。之前跟学生 Alex 的合作让我意识到,他的障碍主要集中在阅读理解,以及需要解题的脚手架。如果它们对我来说不是问题,我的系统和策略又欠缺哪些(以满足我希望的自信感)?
其实我是想重新学一遍线代。大约 17 年前,我在加州理工学院尝试学习线性代数,但因文科背景,那时的数学理论我几乎没掌握。如今,每研究计算机图形和机器学习论文,我都感受到知识的不足,线代的粗浅理解,限制了我在研究图形学和机器学习时的深入了解。我真想彻底掌握它们!
对我来说,线性代数不仅涉及陈述性的知识,也正好包括我做实验所需要的概念性和程序性知识。具体来说,这门学科包含:一大堆符号和专用术语,很多相关联的数学概念和大量的性质,以及处理它们时,一些经典而必要的数学方法。相较于传统记忆系统侧重的陈述性知识,问题解决的实践更强调程序性知识。尽管如此,我一直试图将记忆系统延伸到概念性(以及浅层的)程序性知识域中。
我选的是 Jim Hefferon的《线性代数》这本书,一来它名声在外,二来它的版权也比较宽松:我知道,以后或许要以这书为基础做些实验。一开始,我就认认真真地啃了前 35 页(就像我和 Dwarkesh 在视频里做的那样),一边读一边做了 65 张记忆卡片。我把那几节的 57 道题都做了,还对着答案核对了一遍,检查哪里错了或者有什么新发现,并都做了笔记。这一通操作下来,差不多花了我 20 个小时。
虽说我觉得对学习内容的理解还不错,但我的内在体验和「异乎寻常的轻松和自信感」一点边都沾不上。我给自己构建的这个学习环境,在很多关键点上都支持得不够。不过好在,这也给我后面(对助记媒介)进一步的原型开发和探索指了不少路。
辅助理解
在我需要担心如何构建深刻理解或长期记忆前,我首先得确保最基本的事情 —— 自己能搞懂文本在说什么。
我有个习惯,那就是通过提问和精细阐述文本来加强阅读理解。这样确实让我比很多人更有优势,但我知道,单凭这些还不够:经验表明,我仍会遗漏文本里的关键信息。
但这本书可能有所不同,因为我有了记忆系统和习题集的额外支持。现在,咱们来看看这些支持是如何影响我的阅读理解。
制卡与辅助理解
如果对文本写出详尽的记忆卡片,我的阅读理解通常更加可靠。这个过程让我进入一种主动的视界,我会留意任何看起来重要的内容;我基本不会忽略关键细节,而且,为了将这些细节转化为提取任务(指转换为 SRS 卡片),我通常需要以某种自底而上的方式来理解它们。
这么做很不错,但我注意到了一些明显的局限性。
有时候,我不知道怎么写这些卡片。学习写优质的卡片如同学习写优质的文章:你都需要摸索出一整套应对各种细分情况的策略。但我还没有(或者说尚未)找到针对某些特定材料编写记忆卡片的策略。举个例子,此书讲解解集的首选形式(Preferred Form)时,首先展示了一个抽象的符号表示,然后通过多个对比鲜明的例子来深化讲解,目的是让读者理解这种解集形式为何如此设计,以及它在实践中的作用。用这种抽象符号做一些基础卡片还算简单,但要针对这些例子展示的微妙之处,以及选择这种形式的多重原因去编写卡片就难多了。如果我真的全身心投入并充分发挥创意,一般还是能找到解决办法的。但这经常会让我觉得很累,所以我就走马观花地往下读,有时甚至不自觉地就这么选择了。在这种情况下,编写卡片并没有真正验明我的阅读理解。(当然,这也意味着这些细节不会得到强化——后面再细说。)
**卡片带来的义务感。**我当然想把作者说的话都搞懂,但我不一定想不停地复习作者说的每一句话。当我大量依赖记忆卡片来加强理解,我经常会感觉被「卡片的密度」压得喘不过气。有时我发现很多细节我并不怎么在乎,或者这些细节在后面的综合卡片中已经得到了强化。当然,我可以把多余的卡片删掉,但每删一个都有点成本。而且,写那么多「不必要的」卡片比直接读出来给自己听要麻烦多了。这其中有一部分努力让我对内容有了更深刻的理解,但很多时候感觉像是白费劲。(译者注:依我看,阅读时容易产生大量不成熟的想法,因为不知道什么时候处理,所以产生了必须处理它们的强迫感。如果是「渐进阅读」,你有不止一次回到文本的机会,因此文本中诞生的想法不需要立即写下来,这样不容易开环。完全可以等到理解稳定了再制卡)
**肤浅的卡片,粗浅的理解。**当文章给出一个关键定义时,仅用文中的定义稍作改写就能快速写出一张卡片,这样看似很简单。但这就是问题所在,因为很容易在没有真正理解的前提下做改写,这一点在[自我解释的研究](https://andymatuschak.org/files/papers/McNamara - 2004 - SERT.pdf#page=19)中也有体现。一般来说,仅仅是简单改写文本的效果不是最佳。要写出有效的卡片,往往需要深挖并拓展。有人可能会对我说:「那就把卡片写得更好一点嘛!」当然,但我要指出,这种方法并没有引导我做正确的事。很容易在不经意间写出肤浅的卡片,要避免这种情况,我不仅需要保持高度自省 —— 这在学新东西时很难 —— 还需要在写卡片上多下工夫,但「值不值」这么做,我并不总能确定。
助记媒介与辅助理解
如果自主制卡是个辅助理解的策略,那么他人写的助记媒介中,这可能成为问题。这些内嵌的记忆卡片确实(无意间)起到了个基础的「理解检测」的作用。如果你对段落后的卡片感到莫名其妙,那多半不是忘记什么,很可能因为阅读时就太过粗略。而且这些内嵌卡片还有个间接作用:许多读者发现自己的理解这么糟后,就会开始细心阅读(正如附加问题研究所预测的那样)。
不过我们在设计这个内嵌的回顾界面时,考虑的是记忆练习,而不是理解检测。通过观察一些使用助记媒介的读者,我发现人们对记忆失败和理解失败这两者之间的感受大不相同。
记忆上的失败一般是感到在挖掘一个你曾经理解但现在忘了的东西:「哦,那个虚数项又藏到哪儿去了呢?(查看答案)哎呀,在右上角那里。好,得再复习一遍。」或者:「这个我不记得了,但我也不关心能否记住它。(删了)」当读者清楚地知道某样东西是什么的时候,他们会更放心地宣称自己并不关心它。
相对来说,理解上的失败让卡片感到莫名其妙:「这是啥意思,我一点儿也不明白。(看答案)啊……行吧?还是不懂。」界面上有两个按钮:「记得」和「忘了」。这两个选项对读者来说都挺让人纠结的。他们觉得「应该」按「忘了」,但同时也清楚,这样做只会让这个同样的问题在学习结束时又弹出来。他们不想再碰这个问题:他们知道下次看到还是会一头雾水。因为连答案都不明白,所以也就不觉得记住它有啥用。他们知道,如果问题再出现时能「正确」回答,那也只是机械地复读,没啥意义。按「记得」虽然能「让卡片走开」,但这也不是解决问题的好方法:说不定这事儿挺重要的?他们也不想以后还得再应付这问题。(译者注:这是个典型的开环)
如果我们打算用附加问题来检测理解,我觉得最好在内容和界面设计上做点儿区别,让它跟用来做提取练习的卡片不要太像。
习题集与辅助理解
近来翻阅了一堆文献后,我发现无论是这本书(还是其他大学级别的教材)中的练习题,其实都有三个不同的目的:
-
检查理解:确保你真的阅读并理解了文本。
-
促进技能习得:通过应用所学,来归纳使用模式,强化长期记忆,构建程序化的自动性(译者注:教育语境里,会强调学习知识要达到「自动化」)。
-
挖掘深意:促使你扩展思维,从而看到更多不易察觉的细节,激发创造力。这样不仅让你对材料有更深刻的理解,也让记忆更牢固。
当然了,这几个目标间的比重在不同的题目中各不相同,但所有问题都或多或少地涉及到检查理解。这样做的好处是,你可以通过实践——通过将材料运用起来——来检查理解。比起直接回答死记硬背的理解(和记忆)问题,这样的过程通常更能让人投入其中。特别是当这些题目本身就足够吸引人时,这一点尤为突出。
但大体上,由于习题的目标太多了,这本书里的习题集给我的理解支持没有达到我的预期。我认为,其他类似的书的习题集也有同样的问题。
糟糕的失败模式。有时我感到被问题卡住,但当时会不确定这种卡住,是因为没利用好知识,还是遗漏了正文里关键的点。由于一般情况下,如果理解上没问题,那么缺的只是硬啃的努力。所以我就会想,是不是我得再加把劲。结果,我就在问题上乱搞一气不得其法。这样做毫无建设性,因为我根本就缺少某个关键信息。麻烦在于,自己处于什么情况往往我是不清楚的。要弥补理解的缺口,一般最有效的方法就是重新看一遍文中的某个解释。但就算有答案手册在旁边,我也不清楚应该注意哪一部分。在这种情况下,我只能整个章节重新翻阅,看能不能找到可能有用的点。这种失败的模式,大概是个普遍问题,因此用习题来检查理解程度并不总是那么准确。
覆盖的有偏性:在读完一个章节后,你通常能学到某条定理成立的事实,为何成立,以及为什么它有意义。习题主要强调应用、分析和综合,所以它们通常考察的是你是否理解了某条定理成立,而对其他方面则关注较少。以线性系统为例,书里讲述了线性系统的解,可以由一个特定解配上一组与之相关的齐次系统的解的线性组合来表示。章节大部分内容都在证明这个定理和它的一些派生含义。但没有一个习题检查了我是否理解了证明,对这个定理解释性的部分也仅仅触及皮毛。后来我自测看能不能解释这个证明,才意识到我没理解一个关键步骤,尽管我成功地完成了习题集。
有人可能会说,这仅是教材的一个不足——习题集应该全方位地考察你对该章节所有内容的理解。但我想,习题天然就该偏向于检查对一类内容的理解,而不考虑另一类,这是它的内禀属性。如果强行违背这天然的粒度,最后产生的东西可能就不再是我们通常说的习题了。
哪些题目覆盖新的点?哪些是重复?有的题外观上看起来差不多,内里别出心裁,做起来感到对学过的内容不同角度出击。但有时候,相似的题目只是为了多练几遍,提高娴熟度。有时我觉得没必要再解一道线性方程组:我感觉自己已经炉火纯青了!但有的题目其实有点细微的差异,检查的是新的理解点。所以,我没有放过任何一道小题,但其中许多我都觉得没有必要。换个说法:这些重复的练习应该「分散」到未来几周里,以促进长期记忆。而我并不想推迟对理解的检验。
**答对了,但没领会精髓。**有几次,题目就是这么设计的,按照书里讲的某个规律一步到位就能解出来。我虽然解出了答案,但却没抓住问题的核心。要察觉到这一点,光对答案是不够的,还得重新推敲一下解题步骤,看看跟自己有什么不同,特别是在关键的地方。
技能习得
我们学习新技能的过程中,会出现一个有趣的转折。一开始,我们得仔细琢磨每一个细节和步骤,经常得自言自语道:「解高斯消元,我得用这三招…」但练习多了之后,我们就学到了解体模式。不用再费脑筋去回想,我们天生就知道该怎么做:「好,这方程先除以二,再用它把另一个方程第一个项给消了……」[1]
我自己的感觉是,单靠提取练习并不能让这转折自然发生,尽管它能让过程顺一点,可能因为相关的陈述性知识牢牢记在了长期记忆里,减轻了工作记忆的负担。解题练习是让这个转折发生的传统方法。这招对我来说大多数时候挺管用的,但也遇上几个小挑战,感觉还有改进的空间:
**应当随着时间推移一点一点刷题。**我通常是一节内容看完后,就做这一节相关的所有题目。很多题目都是重复练习同一个技能,比如说:找出含有自由变量的线性方程组的解集。这很好——正是我需要的,提升我的熟练度——但连续做十道这样的题目实在让人心烦。传统的教学方法是只布置课本里一部分题目来解决这个问题,但如果我需要大量练习才能达到熟练呢?从情感和效用(间隔效应)来看,最好是把解题练习分散在不同的时间里。然而,这在实际操作中颇为困难。也许你希望说,显示每天做一道题,再是隔天做一道,再是一周做两道 ...... 以此类推?这需要一种可编程的注意力。
**我应该练多少?**也许我只需要做书中一半的题目?我不确定。那种「以掌握为目标」的学习方法往往有个规则,就是「连续做对五题,就可以停下来了」。这里的问题是,有一些内容在学完之后仍未达到[「无需思考就能识别」](https://andymatuschak.org/files/papers/Anderson - 2000 - Learning and memory.pdf#page=344)的标准,当我碰到更难、需要用到这个前置技能的题目时,我可能就会卡住,因为这个前置技能仍然需要大量的认知负荷,而且原因并不一定清楚。就好像「可汗学院告诉我,我已经掌握了所有前置知识!」,但真正用起来,却还是手忙脚乱。关于程序性知识的文献可能已经找到了一些有用的答案,但我还没有深入地阅读这个主题。例如,我猜测时间压力(例如 Number Munchers?)会揭示出更为明显的差异。
**如何练习证明题?**本书包含了大量证明题。当然,证明题没那么机械化:你并不是在学习执行某种一致的操作。某种程度上说,证明是为了促使你更深入地理解(这一点我们会在下一节中讨论)。但这些证明题,也是在学习对特定的模式的识别、熟练利用数学对象的特定属性。那么,当我未能识别出其中的模式,或者未能看到如何利用这个属性时,我应该怎么做呢?我可以阅读答案,并记下我遗漏的洞见 —— 甚至为此写下一个卡片。但下一步怎么加强练习呢?怎么保证我下次能认出这个套路?证明题跟一般题目不同,没法轻易出一个题目去考察同一个属性(译者:但是你有 GPT 呀)。
深化理解
我不只是想知道文本的字面意义,更想搞懂它的含义,为什么它很重要。我希望能把这些新东西和我的先验经验联系起来,将来还能创造性地用上。总体说来,我想把这些内容彻底内化,形成一个完整且深刻的认知表征。
编写记忆卡片对此有点儿帮助:这个过程让我生成实际的例子,推断文本未明说的部分,思考可能的推论,还能弄清楚为啥我觉得某个细节重要。这些都是比较「高级」的卡片编写方法,大部分用记忆软件的人不太会体验到这一点。助记媒介的读者通过写卡片也不见得能有这种收获,但如果作者设计的卡片能引导他们这么想,那他们也能收获同样的益处。
这本线性代数书的习题就给了我这种启发。很多题目明显是为了让你更深入地思考正文里的细节。有个简单的例子:「在 3.6 引理的证明中,如果没有 0=0 这样的方程会怎样?」尽管我有写卡片的习惯,但当我读这个证明的时候,我就是没想到这一层。
但大部分习题其实是围绕着解题练习来提高你的技能。与其说我想要单纯的记忆支持,不如说我更希望能回答更多促使我去深思和推理的问题。每次复习时解一两道,持续几周。理想情况下,这些问题能逐渐提高我运用知识的广度(译注:即提高知识迁移的距离)。
记住我所学的知识
付出这么多汗水,我当然希望能长久记住我学到的东西。我的记忆练习当然能起到一定作用。但在这里,还有几个饶有兴趣的议题,一些是我们在《灵活的记忆实践产生流畅的理解》一文中首次探讨的。
**高质量的习题能在多大程度上替代有针对性的提取练习呢?**我的很多卡片都是为了让我回想某个具体的信息点,(比如:什么是「奇异性」的定义?)。但如果我解了一个需要用到这个定义的题目,那我其实也是在从长期记忆里提取这个信息,这也有助于加固记忆 —— 甚至可能因为进一步的拓展而更为牢固。解题可能会让人觉得不枯燥,更有意思。但代价是费时费力。这之间该如何取舍?哪种卡片更适合单独练习,而不是整合到一个综合性的题目中?问题的答案会随着我们的熟悉程度而有所不同吗?
**相关卡片应该在复习中分散。**以矩阵的「奇异性」这一概念为例,我当然应该知道它的定义。但除此之外,我还应能:根据定义说出相应的术语;给一个实例后,能判断是否满足「奇异性」;如果知道一个矩阵是「非奇异」的,应能推断出与它相关的线性系统的解有多少种可能性;回答一些特别强调「奇异矩阵必须是方阵」的问题等等。问题在于,当我一口气回答好几个这样的问题后,对于后续问题我就不必再从深层记忆里去摸索答案,因为前面问题的一部分答案还停留在我的短期记忆里。我觉得更高明的做法是,在多次的复习中,把这些密切相关的问题分散开来。可能要让一张问答卡的回答影响到其他问题的复习周期。这也是概念性知识的记忆软件,与传统的、为事实性知识服务的记忆软件之间有所不同的一个关键环节。
**有些卡片需要变体。**我偏好那些包含实例的问题,比如判断「这个矩阵是不是奇异的?」,你肯定不想每次都看到同一个矩阵,那样就变成死记硬背了。关键是熟悉操作流程,这种问题很适合来点随机,或者至少从几个预制的选项里挑一挑,就像《量子力学简明教程》里所用的「应用卡」那样。
**如何将问题解决能力整合到复习环节中?**在完成这些题目集后,我深感自己已经可以将所学用到各种场景下了。如何通过复习以保持状态?一种方法就是在复习中穿插类似的问题,但这些问题确实会改变我的复习形式:很多题目需要专门准备纸笔,要花费更多的时间。我通常在手机上复习,也不一定总有纸笔在手边。也许我得每周专门腾出一两个时间段,做些更复杂的练习?另外,为了试验,我也能把这些问题改编成「心算」的形式,不用纸笔也能解决。这个策略能普遍应用吗?这些「降级」过的问题,足够维持我所学的技能吗?
**如何处理解题过程中迸发的新洞见?**这书里最有意思的题目,似乎是为了让我在解题过程中产生一些特定的洞见。好多时候它们只可意会不可言传,多半涉及到符号或者抽象概念中微妙的联系或强调。但我明确感到这是有价值的学习。怎么确保我能牢记这一经验呢?要编写关于这些洞见的卡片,我总感到伤脑筋。
如何处理知识的证明?坦白讲,我对证明还真没有一套行之有效的知识体系。我真正想要的不仅是知道那个证明,更重要的是深入了解其关键步骤和洞见,这样才能应用到其他相关的命题上。比如,书里给出了一个证明,说改变线性方程的顺序不会影响解的集合。借此思路,我也证明了高斯消元中的缩放和组合操作是靠谱的。但怎么做才能永保这种理解?我对应该写什么样的卡片,或者怎么写,感到不是很确定[2]。现在距离我第一次学这个已经两周了,我自测了一下,虽然费了点劲,但最复杂的证明我还是能复述出来。
**编写卡片很耗时。**大概算一算,我在这几节里花了 20 小时,其中至少有两小时是在写这些卡片上。虽然制卡税只有 10%,但相对于能增强理解和记忆,也算不得什么。但这个过程比单纯看书或者解题都费神,感觉至少占了我三分之一的精力,有时候甚至是一半。(译者注:woz:渐进!渐进!)
总结几个高屋建瓴的点
抛开细节不谈,如果我有根魔法棒,我想要实现的愿望包括:
-
一种「迅速检测我有没有理解这一段」的小交互。也许简单的问题能促使我梳理一下关键点,不至于让复习变得乏味。在明白了文章的意图之后,解决问题和提取练习就会更加得心应手。
-
一个简便的方法,让我能把以技能习得为导向的复习,散布到不同复习时间上。
-
在我的复习练习中,逐步加入 2-3 倍量综合性、由多种概念复合的问题。
-
将我的复习环节从单纯的提取练习,转向不固定的问题练习,后者在某种程度上应该能包含前者。
-
解题过程中会出现洞见的萌芽,如何捕捉、加强这些萌芽呢?希望能更好地理解这个过程。
-
最后,尽量不用亲自编写记忆卡片。
如果我能如愿以偿,我想我会感到更加接近「异乎寻常的轻松和自信感」。预计接下来的几周,我会着手制作一些这方面的原型。
————————
感谢 Gary Bernhardt、Elliott Jin 和 Russel Simmons 在这些主题上的有益讨论。
————————
[1] 欲了解这个过程的更多细节,可以参考 [John R. Anderson 的《学习与记忆》一书的第九章](https://andymatuschak.org/files/papers/Anderson - 2000 - Learning and memory.pdf#page=334)。
[2] Michael Nielsen 的文章《如何用间隔重复深入理解数学》给了我不少启发,但我现在还不能完全把这些见解联系起来。\n[译后注] 本文是一篇试图解决复习卡片时一些顽固问题的实践。andy 提出了一些制卡模式遇到的问题,并试图通过卡片的创新来突破它:1、涉及过程的知识很难制卡,2、通过解题过程产生的灵光,很难通过文字记录在日后进行重放(文脑屏障?)3、综合性的卡片的问题等。